package com.uade.servlets;

import java.io.IOException;
import java.util.ArrayList;
import java.util.List;

import javax.naming.NamingException;
import javax.servlet.RequestDispatcher;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

import org.apache.log4j.Logger;

import com.uade.business.BusinessDelegate;
import com.uade.business.BusinessDelegateImpl;
import com.uade.model.Articulo;
import com.uade.model.Compra;
import com.uade.model.Evento;
import com.uade.model.ItemCompra;
import com.uade.model.Usuario;
import com.uade.model.exceptions.NotFoundException;

/**
 * Servlet implementation class AgregarItemCarritoSrv
 */
public class AgregarItemCarritoSrv extends HttpServlet {
	private static final long serialVersionUID = 1L;
	private static Logger log= Logger.getLogger(AgregarConfiguracionSrv.class);
       
    /**
     * @see HttpServlet#HttpServlet()
     */
    public AgregarItemCarritoSrv() {
        super();
        // TODO Auto-generated constructor stub
    }

	/**
	 * @see HttpServlet#doGet(HttpServletRequest request, HttpServletResponse response)
	 */
	protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
		// TODO Auto-generated method stub
	}

	/**
	 * @see HttpServlet#doPost(HttpServletRequest request, HttpServletResponse response)
	 */
	protected void doPost(HttpServletRequest request, HttpServletResponse response)
			throws ServletException, IOException {
			//response.setContentType("text/html");
	
		try {
			
			
			int articuloId = Integer.valueOf(request.getParameter("articuloId"));
			int cantidad = Integer.valueOf(request.getParameter("cantidad"));
						
			BusinessDelegate busDel = BusinessDelegateImpl.getInstanace();			
			Articulo articulo = busDel.busqueda(articuloId);		
			Compra compra = (Compra)request.getSession().getAttribute("compra");			
			List<ItemCompra> itemsCompra = compra.getItems();			
						
			ItemCompra item = new ItemCompra();			
			item.setArticulo(articulo);
			item.setCantidad(cantidad);			
				
			boolean existeArticulo = false;
			for (ItemCompra itemCompra : itemsCompra) {
				if(itemCompra.getArticulo().getIdProducto() == articulo.getIdProducto())
				{
					itemCompra.setCantidad(cantidad);
					existeArticulo=true;
				}
			}
			//Comunicacion con Logistica y Monitoreo
			Evento evento = new Evento();
			evento.setIdArticulo(articulo.getNombre());
			evento.setCantidad(String.valueOf(item.getCantidad()));
			if(!existeArticulo){			
				itemsCompra.add(item);

				evento.setAccion("Se agrega articulo: ");
				log.info("Se envia el logeo a logistica y monitoreo: agregar articulo");

			}else{
				evento.setAccion("Se modifica cantidad articulo: ");
				log.info("Se envia el logeo a logistica y monitoreo: modificar cantidad articulo");
			}
			
			try {
				busDel.logearEvento(evento);
			} catch (Exception e) {
				log.warn("Error en la comunicacion de logueo con logistica y monitoreo"
						+ e.getMessage());
			}

			compra.setItems(itemsCompra);
			
			
			
			//Modifico la compra con el nuevo item
			request.getSession().setAttribute("compra", compra);
			
			//Devuelvo la lista de articulos			
			request.getSession().setAttribute("articulosCompra", compra.getItems());			
			response.sendRedirect("jsp/ListarComrpaArticulos.jsp");	

		}
		catch (NotFoundException e){
			request.setAttribute("articulos", null);			
			response.sendRedirect("jsp/ListarComrpaArticulos.jsp");
		}
		catch (NamingException e) {
			e.printStackTrace();
		}

	}

}
